<?php

/**
 * Classe responsável por criar conexão com banco de dados, ela está implementada de acordo
 * com o padrão de projeto singleton.
 *
 * @author gabrielbmoro
 */
class ConectaDB {
    /* O objeto instance armazenará a única instância de ConectaDB no projeto 
     * inteiro, quanto ao bdConection será responsável pela conexão com o banco
     * de dados através do objeto mysqli, implementado pela biblioteca nativa php.
     * Além disso, os atributos como host, user, password, database, terão seus valores
     * de acordo com a base de dados utilizada.
     */

    private static $instance;
    private $bdConection;
    private $host, $user, $password, $database;

    private function __construct() {
        $this->host = "localhost";
        $this->user = "root";
        $this->password = "";
        $this->database = "mydb";

        $this->bdConection = new mysqli($this->host, $this->user, $this->password, $this->database);
    }

    /* Método característico do padrão singleton, 
     * ele verifica se já foi realizado um instanciamento de ConectaDB. Se sim ele apenas 
     * retorna o objeto, caso não, instancia-o e o retorna.     
     */

    public static function singleton() {
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }

        return self::$instance;
    }

    public function getBCConection() {
        return $this->bdConection;
    }

    public function encerrarConexao() {
        $this->bdConection->close();
    }

}
